基于个人服务器的P2P内网穿透 | 您所在的位置:网站首页 › zerotier 搭建网站 › 基于个人服务器的P2P内网穿透 |
前言
作为一个重度桌游爱好者,最近和小伙伴沉迷TTS(桌游模拟器),但是TTS是基于P2P进行连接的,如果小伙伴都不在一个网络节点上就会非常卡顿,为了更好的玩游戏,最后使用了基于zerotier的内网穿透方案 用上了内网穿透之后,再也不会掉线了,桌游体验极其完美 原理购买服务器zerotier虚拟节点搭建服务器运维客户端配置 原理我只是前端,具体的运维技术我不是太了解,但是大致原理可以理解为: 1.P2PP2P是用户与用户直连,某一个玩家作为主机,其他人去连接他的节点 但是我们都知道,这很取决于主机玩家的网络状况,而且因为是直连,延迟非常感人 只要主机玩家网络一波动,大家就都掉线了 2.内网穿透内网穿透就是我们所有客户端去连接一个节点,然后通过这个节点分发数据,进行直连 这个节点就是zerotier 但是zerotier服务器在国外,直连的话网速感人,我们就需要我们的个人服务器作为一个中转站,所有客户端连我们的国内服务器,服务器加速客户端之间的互相访问(因为服务器是公网ip,直连延迟就非常低) 购买服务器本人用的阿里云个人服务器,基于linux和node搭建的后端,带宽不需要很高即可 购买服务器的可以参考我写的 个人网站搭建保姆级教程(1)-服务器购买与环境搭建_皮宁澜的博客-CSDN博客 zerotier虚拟节点搭建zerotier可以理解为一个简单的内网穿透管理器,方便我可爱的小伙伴们快速连接到我的服务器,实际传输其实是靠我们的服务器的 1.zerotier注册ZeroTier Central zerotier的官网非常简洁轻快 之后点击 Create A Network,选择private(个人服务器)
这样你就相当于有了一个内网穿透的账户,而且会生成一个NETWORK ID,将ID复制下来 2.服务器连接之后在服务器配置zerotier,对于一般的linux系统,只需要一串命令就好 curl -s https://install.zerotier.com | sudo bash以管理员身份在服务器上安装zerotier 其他操作系统可以访问 Download – ZeroTier 下载好后,我们就可以进行登陆了,linux输入 zerotier-cli join XXXXXXXX #刚刚在zerotier官网上创建生成的NETWORK ID最后,我们还要去zerotier官网上将我们刚刚join的操作进行一个通过 第一个设备为我的个人电脑测试用,第二个设备为我的服务器,一直保持运行状态,实际运用只需要服务器保持连接就好 服务器运维现在服务器已经连接到zerotier了,但是还需要配置一下客户端文件 打开服务器的zerotier目录(如果是linux系统,在/var/lib/zerotier-one)输入 zerotier-idtool initmoon identity.public >>moon.json这样会生成一个卫星服务器(moon)的配置文件moon.json 我们通过记事本打开moon.json,将其中的 "stableEndpoints": [ ]改为 "stableEndpoints": [ XXX.XX.XX ] //你的服务器的公网IP改好后新JSON文件覆盖原来的JSON文件 覆盖好后执行命令 sudo zerotier-idtool genmoon moon.json这样,zerotier会读取我们刚刚的moon.json并生成一个.moon文件,我的是00000039c1ef6855.moon(每一个机器生成的moon文件不一样) 我们需要将这个.moon文件保存一下,等一下客户端会用到 最后,我们只需要重启一下我们的崭新出厂的卫星服务器就好了 在我们刚刚的 /var/lib/zerotier-one 文件夹下面,手动创建一个新文件夹moons.d,将刚刚生成的 .moon文件放进去 其他操作系统在对应的zerotier文件夹里面 然后重新启动我们的zerotier服务即可 service zerotier-one restart客户端配置 客户端的配置就很简单了,而且是一次配置,终身享用,开机即启,无感直连。 1.下载zerotier并安装Windows系统: 官网下载Download – ZeroTier linux系统:(终端执行) curl -s https://install.zerotier.com | sudo bash 如果下载速度慢可以直接网上找下载包 2.拿到刚刚服务器上生成的.moon文件(1)客户端是linux系统 把.moon文件放到对应zerotier文件夹下新建的moons.d文件夹里面,执行命令 service zerotier-one restart(2)客户端是Windows系统 打开计算机中的‘服务’ 找到zerotier服务,右键,点击属性,打开zerotier目录 找到这个地址,打开这个地址(默认是C:\ProgramData\ZeroTier\One)并新建一个moons.d文件夹,把我们刚刚服务器生成的.moon文件放进去 之后回到服务页面,重启zerotier服务 最后打开命令行(cmd,或者搜索命令提示符) 输入zerotier-cli listpeers并回车 出现这一行即可 这样的话,客户端的zerotier会自动识别到我们卫星服务器(moon)。而且与在同一moon服务器下的客户端通过P2P传输数据的时候,会自动使用我们的卫星服务器。 而且每次开机会自动开启服务,以后直接连就可以了 后记正好我有个人服务器,捣鼓了半个下午终于搞定,当天就和小伙伴开TTS开到凌晨 之前我们三人直连,互相的延迟大概都是400ms,而且总是断,现在内网穿透之后,延迟稳定在20ms,再也没有掉线的情况了。小伙伴们普遍使用体验极其良好 当然了,P2P内网穿透不光可以用在玩游戏上,用我这一套,相当于所有设备都在一个局域网下面,那想干什么都可以了~(共享文件,远程连接等等) 有一位小伙伴被隔离了,就只能通过线上一起玩桌游了 |
CopyRight 2018-2019 实验室设备网 版权所有 |